/*
 * SimRewardFunction.h
 */

#ifndef SIMREWARDFUNCTION_H_
#define SIMREWARDFUNCTION_H_

#include <caction.h>
#include <cstate.h>
#include <crewardfunction.h>
#include <opal.h>
#include "SimEnvironment.h"
#include "Constants.h"

class SimRewardFunction: public CRewardFunction
{
	SimEnvironment *simEnv;
	int exptNum;

public:

	int rewardType;

	SimRewardFunction(SimEnvironment *simEnv, int exptNum);

	double getReward(CStateCollection * oldState, CAction *action, CStateCollection *newState);

	double defaultRewardFast( CStateCollection *newState);
	double defaultRewardNotFall( CStateCollection *newState);
	double defaultRewardPotential( CStateCollection *oldState, CStateCollection *newState, int numState);


};

#endif /* SIMREWARDFUNCTION_H_ */
